User interface systems typically face a trade-off between high interactivity via local program code and projection to, typically, remote rendering devices, where network bandwidth impedes their ability to provide high interactivity. Many systems simply accept degraded interactivity or quality when using a rendering device or “renderer”. Other systems explicitly provide snippets of helper code to execute on rendering devices. Still others adopt an explicit host/renderer model for user interface, forcing developers to design two whole pieces of software that communicate with each other. Finally, some approaches simply demand higher performance rendering device hardware and connectivity to provide richness in such scenarios.
These systems have significant drawbacks. Degrading quality affects end user results. Requiring snippets of helper code complicates the programming and interaction models. Renderer/host computing forces each application developer to develop explicitly for each possible rendering device, thereby limiting the reach or prohibitively increasing the cost of many solutions. Requiring higher performance rendering device hardware and connectivity also carries prohibitive cost.
Subject matter presented herein addresses these and other issues, for example, by judicious selection of renderer and host runtime components, communications protocol design and programming model.